Swift Testing
最近出たSwift Testing、良さそうだぞ
https://www.youtube.com/watch?v=WFnkNcvLnCI
code:Tests.swift
import Testing
@testable import Your_Module
@Test func videoMetadata() {
let video = Video(fileName: "...")
let expectedMetadata = Metadata(duration: .seconds(90))
}
// 後から探しやすいようにテストケースの名前を変更
@Test("Check video metadata") func videoMetadata() { ... }
// 非同期な処理や失敗するかもしれない処理はasync throws をマークすることもできる
@Test func rating() async throws { ... }
// structでラップすることもできる
struct VideoTests {
@Test func ...
@Test func ...
@Test func ...
}
// 条件がfalseの時にテストを停止させる。
// Optionalな値のアンラップも可能
@Test("Custom Name")
@Test(.bug("example.com/issues/99999", "Title"))
@Test(.tags(.critical))
@Test(.enabled(if: Server.isOnline))
@Test(.disabled("Currently broken"))
@Test(...) @available(iOS 15.0, *)
@Test(.timelimit(.minutes(3))
@Suite(.serialized) // テストケースを同時ではなく直列で実行する。
NOT
#expect(...)系メソッドをXCTestsから呼ばない